from telebot import TeleBot
from logg import logger
from Config import *
import datetime

current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# Добавление обработчика к логгеру
def message_handler(bot: TeleBot):
    forward_messages = forward 
    chat_id_to_send = chatidtosend
    message_text = ""  # Инициализация переменной message_text
    
    @bot.message_handler(func=lambda message: True, content_types=['text', 'photo'])
    def process_message(message):
        nonlocal message_text  # Используем nonlocal для обращения к внешней переменной
        nonlocal forward_messages  # Используем nonlocal для обращения к внешней переменной
        user_name = message.from_user.first_name  # Получаем имя пользователя
        chat_name = ''
    
        
        # Определение имени чата, если сообщение приходит из группового чата или супергруппы
        if message.chat.type == 'group' or message.chat.type == 'supergroup':
            chat_name = message.chat.title
    
        # Формирование текста в соответствии с типом чата
        if message.chat.type == 'private':  # Личное сообщение
            if message.content_type == 'text':
                text = f"[{user_name}]: {message.text}"
                print(f"{user_name}: {message.text}")
                with open('chatlog.txt', 'a', encoding='utf-8') as f:
                    f.write(f"{current_time} {user_name}: {message.text}\n")             
                message_text = message.text  # Обновляем значение message_text при получении текстового сообщения
            elif message.content_type == 'photo':
                text = f"[{user_name}] отправил фото"
                if forward_messages:
                    # Копирование и отправка фото отдельным сообщением, если пересылка разрешена
                    try:
                        photo_id = message.photo[-1].file_id # Получаем ID фото
                        photo_info = bot.get_file(photo_id) # Получаем информацию о фото
                        caption = message.caption # Получаем текст сообщения (если он есть)
                        photo_file = bot.download_file(photo_info.file_path) # Скачиваем фото
                        bot.send_photo(chat_id_to_send, photo_file, caption=caption) # Отправляем фото
                    except Exception as e: # Если не удалось отправить
                        print(f"Ошибка при обработке фото: {e}") #  Выводим ошибку в консоль
            try:
                if message.chat.id != chat_id_to_send and forward_messages:
                    bot.send_message(chat_id_to_send, text)
            except Exception as e:
                print(f"Ошибка при отправке сообщения: {e}")
        else:  # Сообщение из группового чата или супергруппы
            if message.content_type == 'text':
                text = f"[{chat_name}] [{user_name}]: {message.text}"
                print(f"[{chat_name}] {user_name}: {message.text}")
                with open('chatlog.txt', 'a', encoding='utf-8') as f:
                    f.write(f"{current_time} [{chat_name}] {user_name}: {message.text}\n")
                message_text = message.text  # Обновляем значение message_text при получении текстового сообщения
            elif message.content_type == 'photo':
                text = f"[{chat_name}] [{user_name}] отправил фото"
                if forward_messages:
                    # Копирование и отправка фото отдельным сообщением, если пересылка разрешена
                    try:
                        photo_id = message.photo[-1].file_id
                        photo_info = bot.get_file(photo_id)
                        caption = message.caption
                        photo_file = bot.download_file(photo_info.file_path)
                        bot.send_photo(chat_id_to_send, photo_file, caption=caption)
                    except Exception as e:
                        print(f"Ошибка при обработке фото: {e}")
    
            try:
                if message.chat.id != chat_id_to_send and forward_messages:
                    bot.send_message(chat_id_to_send, text)
            except Exception as e:
                print(f"Ошибка при отправке сообщения: {e}")

